<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <button onclick="dingyue()">订阅消息</button> |
    <button onclick="user()">用户二</button>
    |
    <button onclick="send('好好学习天天向上')">发布消息</button>
</body>
<script>
    //  定义公众平台
    let bus = {
        // 用来存放订阅者回调
        list:[],
        // 订阅者
        on(callBack){
            console.log("订阅消息")
        //    console.log(this)
            // 将订阅者回调函数存放到list列表中
            this.list.push(callBack)
        },
        // 发布者
        emit(msg){
            // console.log(msg)
            // 获取订阅者列表
            console.log(this.list)
            this.list.forEach((callBack)=>{
                callBack(msg)
            })
        }
    }
    function dingyue(){
        // 订阅消息时传递一个函数
        bus.on((msg)=>{ 
           alert(msg)
        });
    }
    function user(){
        bus.on((msg)=>{
            alert(msg)
        })
    }
    function send(msg){
        bus.emit(msg)
    }
</script>
</html>